package com.dican.portal.pedidos;

import java.io.IOException;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.dican.portal.DAO.PedidoDAO;
import com.dican.portal.beans.Pedido;
import com.dican.portal.beans.Produto;
import com.dican.portal.beans.Representante;

public class FinalizaPedido extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public FinalizaPedido() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request,response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession(false);
		if(session==null)
			response.sendRedirect("logout.jsp");
		else{
			Pedido pedido = (Pedido)session.getAttribute("pedido");
			pedido.setObservacao(request.getParameter("txtObs").replace("'", ""));
			pedido.setTransportadora(request.getParameter("listaTransp"));
			pedido.setFormapagamento(request.getParameter("listaCond"));
			try{
				pedido.setTransportadoraNome(PedidoDAO.getTransportadoraNome(pedido.getTransportadora()));
				pedido.setFormapagamentoNome(PedidoDAO.getCondicaoNome(pedido.getFormapagamento()));
			}catch(SQLException e){
				e.printStackTrace();
			}catch(Exception e){
				e.printStackTrace();
			}
			pedido.getCliente().setTipoFrete(request.getParameter("listaFrete")); 
			try {
				pedido.setNumero(PedidoDAO.getNumero("select ad_sequence_doctype('CB6EEA256BBC41109911215C5A14D39B','','Y') as documentno"));
			} catch (SQLException e1) {
				e1.printStackTrace();
			} catch (Exception e1) {
				e1.printStackTrace();
			}
			Representante rep = (Representante)session.getAttribute("rep");
			for(Produto produto : pedido.getProdutos())
			{
				String query = "INSERT INTO IMP_Order (IMP_ORDER_ID,AD_CLIENT_ID, AD_ORG_ID,AD_ORGTRX_ID,createdby, DOCUMENTNO, C_Doctype_ID,C_BPartner_id,name,M_Product_Id,qtyOrdered,salesrep_Id, m_Shipper_Id, m_Pricelist_Id, m_Warehouse_Id,c_paymentterm_id,dateordered,c_UOM_id,issotrx,description,deliverynotes,perform_post,priceactual,cifoufob,discount) ";
				query=query+"VALUES (get_uuid(),'"+rep.getClientId()+"',CASE '"+rep.getOrgid()+"' WHEN 'EAD719B081644D118D597D71F4560D9D' THEN '11AC3770251E4C7D8D4A7C3EAF239339' WHEN '091B2E8E1A5B4F70975601CF9A895F59' THEN '5139F1D3DB8F471BB80FE02E1BF8162E' ELSE '"+rep.getOrgid()+"' END ,CASE '"+rep.getOrgid()+"' WHEN 'EAD719B081644D118D597D71F4560D9D' THEN '11AC3770251E4C7D8D4A7C3EAF239339' WHEN '091B2E8E1A5B4F70975601CF9A895F59' THEN '5139F1D3DB8F471BB80FE02E1BF8162E' ELSE '"+rep.getOrgid()+"' END,'"+rep.getId()+"','"+pedido.getNumero()+"','CB6EEA256BBC41109911215C5A14D39B','"+pedido.getCliente().getId()+"','"+pedido.getCliente().getNome()+"','"+produto.getId()+"','"+produto.getQuantidade()+"','"+pedido.getRepresentante().getId()+"','"+pedido.getTransportadora()+"',(select pl.m_pricelist_id from m_pricelist pl where (case when ad_org_isinnaturaltree(pl.ad_org_id,'"+rep.getOrgid()+"',pl.ad_client_id)='Y' then true else false end) and pl.isactive='Y' and pl.isdefault='Y'),'F2CB9C2148094F2E9FF57826CC9729DD','"+pedido.getFormapagamento()+"',now(),'100','Y', '"+pedido.getObservacao()+" - Desconto:"+pedido.getDesconto()+"%','"+pedido.getObservacao()+"','N',round("+produto.getValor()*(1-pedido.getDesconto()/100)+",2),CASE '"+pedido.getCliente().getTipoFrete()+"' WHEN 'CIF' THEN '0' ELSE '1' END,"+pedido.getDesconto()+")";
				try{
					PedidoDAO.inserePedido(query);
				}catch(SQLException e){
					e.printStackTrace();
				}catch(Exception e){
					e.printStackTrace();
				}
			}
			
			response.sendRedirect("EnviaMail");
		}
	}

}
